////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file   Calibration\Configuration.h
///
/// @ingroup Calibration
///
/// @brief  Reads the configuration file from the disk
////////////////////////////////////////////////////////////////////////////////////////////////////

#include "Common.h"

////////////////////////////////////////////////////////////////////////////////////////////////////
/// @class  Configuration
///
/// @brief  Reads the configuration file from the disk. 
///
/// @author Brett Jones and Rajinder Sodhi
/// @date   12/12/2010
////////////////////////////////////////////////////////////////////////////////////////////////////
class Configuration
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /// @fn public: Configuration(const char* filename, struct stParams* sl_params)
    ///
    /// @brief  Constructor
    ///
    /// @author Brett Jones
    /// @date   12/12/2010
    ///
    /// @param  filename            Configuration filename.
    /// @param [in,out] sl_params   Paramaters.
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    Configuration(std::string filename, struct slParams* sl_params);

    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /// @fn void Load()
    ///
    /// @brief  Reads the configuration. 
    ///
    /// @author Brett Jones
    /// @date   12/12/2010
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    void Load();

    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /// @fn void Save()
    ///
    /// @brief  Writes the configuration. 
    ///
    /// @author Brett Jones
    /// @date   12/12/2010
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    void Save();

private:
    //! File to read/write to.
    std::string mFilename;

    //! Ptr to the parameters.
    struct slParams* mSlParams;
};